package com.algo.config;

import com.algo.animal.Cat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * Spring管理的bean生命周期
 * 第一种：通过配置 init-method和 destroy-method 方法
 * 第二种：bean实现 InitializingBean和 DisposableBean 接口
 * 第三种：通过注解 @PostConstruct和 @PreDestroy 方式
 * 第四种：通过向容器中注册一个 BeanPostProcessor方式
 */
@Configuration
@ComponentScan(basePackages = "com.algo.animal")
@PropertySource(value="classpath:/application.properties")
public class MainConfigOfLifecycleConfiguration {

    @Bean
    public MyBeanPostProcessor myBeanPostProcessor() {
        return new MyBeanPostProcessor();
    }

}
